Core.Test.registerTest({
	group: "assert",
	name: "Assert.equals",
	
	_should: {
		fail: {
			"Shouldn't assert different booleans as equal": true,
			"Shouldn't assert different numbers as equal": true,
			"Shouldn't assert different strings as equal": true,
			"Shouldn't assert primitives different types as equal": true,
			"Shouldn't assert empty array & empty object as equal": true,
			"Shouldn't assert empty & filled arrays as equal": true,
			"Shouldn't assert different arrays (first level) as equal": true,
			"Shouldn't assert different arrays (lower level) as equal": true,
			"Shouldn't assert arrays, whitch size differs, as equal": true,
			"Shouldn't assert empty & filled objects as equal": true,
			"Shouldn't assert different objects (first level) as equal": true,
			"Shouldn't assert different objects (lower level) as equal": true,
			"Shouldn't assert objects, whitch size differs, as equal": true
		}
	},
	
	"Should assert same booleans as equal": function( )
	{
		Assert.equal( true, true );
	},
	
	"Should assert same numbers as equal": function( )
	{
		Assert.equal( 10, 10 );
	},
	
	"Should assert same strings as equal": function( )
	{
		Assert.equal( "string", "string" );
	},
	
	"Shouldn't assert different booleans as equal": function( )
	{
		Assert.equal( true, false );
	},
	
	"Shouldn't assert different numbers as equal": function( )
	{
		Assert.equal( 10, 11 );
	},
	
	"Shouldn't assert different strings as equal": function( )
	{
		Assert.equal( "same", "different" );
	},
	
	"Shouldn't assert primitives different types as equal": function( )
	{
		Assert.equal( 0, false );
	},
	
	"Should assert empty arrays as equal": function( )
	{
		Assert.equal( [ ], [ ] );
	},
	
	"Should assert empty objects as equal": function( )
	{
		Assert.equal( { }, { } );
	},
	
	"Shouldn't assert empty array & empty object as equal": function( )
	{
		Assert.equal( [ ], { } );
	},
	
	"Should assert same arrays as equal": function( )
	{
		Assert.equal( [ "aa", "bb", 10 ], [ "aa", "bb", 10 ] );
	},
	
	"Should assert same recusive arrays as equal": function( )
	{
		Assert.equal( [ [ 0, 1, 2 ], [ 3, 4, 5 ], true ], [ [ 0, 1, 2 ], [ 3, 4, 5 ], true ] );
	},
	
	"Shouldn't assert empty & filled arrays as equal": function( )
	{
		Assert.equal( [ ], [ "aa", "bb" ] );
	},
	
	"Shouldn't assert different arrays (first level) as equal": function( )
	{
		Assert.equal( [ "aa", "bb", 10 ], [ "aa", "cc", 10 ] );
	},
	
	"Shouldn't assert different arrays (lower level) as equal": function( )
	{
		Assert.equal( [ [ 0, 1, 2 ], [ 3, 4, 5 ], true ], [ [ 0, 1, 2 ], [ 3, 4, 6 ], true ] );
	},
	
	"Shouldn't assert arrays, whitch size differs, as equal": function( )
	{
		Assert.equal( [ 1, 2, 3 ], [ 1, 1, 2, 3 ] );
	},
	
	"Should assert same objects as equal": function( )
	{
		Assert.equal( { key: "value", keyB: 21 }, { key: "value", keyB: 21 } );
	},
	
	"Should assert same recusive objects as equal": function( )
	{
		Assert.equal( { key: { key: "value" }, keyB: { keyA: 1, keyB: false } }, { key: { key: "value" }, keyB: { keyA: 1, keyB: false } } );
	},
	
	"Shouldn't assert empty & filled objects as equal": function( )
	{
		Assert.equal( { }, { key: "value" } );
	},
	
	"Shouldn't assert different objects (first level) as equal": function( )
	{
		Assert.equal( { key: "value", keyB: 21 }, { key: "value", keyB: 12 } );
	},
	
	"Shouldn't assert different objects (lower level) as equal": function( )
	{
		Assert.equal( { key: { key: "value" }, keyB: { keyA: 1, keyB: false } }, { key: { key: "value" }, keyB: { keyA: 0, keyB: true } } );
	},
	
	"Shouldn't assert objects, whitch size differs, as equal": function( )
	{
		Assert.equal( { keyA: "A", keyB: "B" }, { keyA: "A" } );
	}
});